a = {1: [1,2,3]}
b = a.copy()
print(a, b)
"""

模块：模块可能是一个.py文件，如果是多个.py文件组成的模块，那么就叫它包
模块文件中存放了关于本模块的一些方法，函数，属性，类等
    使用模块，必须先导入
copy模块
    主要核心功能就两个
        1.浅拷贝（等同于copy()）
        如果拷贝的对象有N层，那么浅拷贝只是拷贝了第一层，里边的N层会受到源对象的影响
        如果源对象对N层数据做变动（一层除外），那么拷贝的对象也会发生改变，反之同理
        2.深拷贝（完全拷贝）

"""""
import copy

ls = [1, 2, 3, 4, [5, 6, [7, 8, [9]]]]
ls1 = copy.copy(ls)  # 这个是copy模块的浅拷贝方法
# ls2 = ls.copy() # 这个也是浅拷贝，但它是列表类中的方法
ls3 = copy.deepcopy(ls)
ls3[-1][0] = 'f'
print(ls)
print(ls3)

'''列表，字典的拷贝'''
# ls = [1, 2, 3, 4]
# ls1 = ls.copy()
# print(ls, ls1)

"""
from datetime import datetime 
datetime 类的常用方法
from datetime import datetime,date

now_datetime = datetime.now()
# print(datetime.now()) # 获取当前的日期时间
# print(datetime.today())  # 获取系统的日期和时间
# print(now_datetime.date()) # 获取日期部分
# print(now_datetime.time()) # 获取时间部分

# 时间戳，一般是一个数字，它的单位通常是秒，一般指的是1970.1.1 0：00：0(UTC)至某个日期时间的秒数
# UTC就是世界协调时，中国一般是 UTC+8,日本 UTC+9
now_timestamp = datetime.timestamp(now_datetime)  # 当前时间的时间戳
# print(datetime.fromtimestamp(now_timestamp)) # 将时间戳转换为日期

# 源格式：2025-01-09 15:26:01.927368
print(now_datetime.strftime('%Y,%m,%d-%H:%M:%S')) # 2025,01,09-15:29:23

print(now_datetime.replace(year=2000)) # 替换日期时间的某一部分

'''date类的常用方法'''
now_date = date.today()
print(now_date) # 2025-01-09
print(now_date.weekday()) # 3代表星期四，0是星期一，6是星期日
print(now_date.ctime()) # 显示'C'风格的日期时间
"""
'''日期时间常用的格式化代码和它们的含义

%Y：四位数的年份
%m：两位数的月份（01 - 12）
%d：两位数的日期（01 - 31）
%H：两位数的小时（00 - 23）
%M：两位数的分钟（00 - 59）
%S：两位数的秒数（00 - 59）
%f：微秒（000000 - 999999）
%a：缩写的星期名
%A：完整的星期名
%b：缩写的月份名
%B：完整的月份名
%p：本地AM或PM的等价符
%j：一年中的第几天（001 - 366）
%U：一年中的第几个星期（00 - 53），星期天为每周的第一天
%w：星期几（0 - 6），星期天为每周的第一天
%W：一年中的第几个星期（00 - 53），星期一为每周的第一天
%x：本地日期表示
%X：本地时间表示
%c：本地日期和时间表示
%z：UTC偏移量
%Z：时区名称
%% ：一个百分号
'''
'''
=================time模块===========================

import time

print(time.time()) # 是以时间戳的形式展现
print('开始')
time.sleep(0.1) # 等待，(s)即等待s秒
print(time.localtime()) # 打印time.struct_time类型的当前时间
print(time.gmtime()) # 当前时间的UTC的时间
print(time.strftime('%Y-%m-%d')) #将当前时间按照你给定的格式，以字符串的类型输出
print(time.ctime()) 
print('结束')

'''

'''import sys

"""负责与python解释器做交互"""
print(sys.version) # 返回python的版本
print(sys.platform) # 返回的是操作系统平台的名称
print(sys.argv) # 收集传递给命令行的参数
print(sys.modules) # 已导入模块的信息
print(sys.path) # 返回导包的路径,形式是列表

'''
import sys
print(sys.version)








import os

"""os模块主要负责程序与操作系统之间的交互"""

'''操作系统的方法'''
# print(f'当前操作系统是:{os.name}') # 获取当前操作系统的名称，nt是windows，posix是linux
# print(f'当前系统的环境变量是:{os.environ}') # 获取系统的环境变量
# print(f'"ANT_HOME"的值是:{os.getenv("ANT_HOME")}') # 获取指定系统变量的值
# os.system('mkdir demo') # 执行cmd指令

# print(os.walk('../')) # 它是一个目录生成器<generator object _walk at 0x00000192667C2AC0>
# for pwd, dirs, files in os.walk('../'):
#     print(f'当前目录是：{pwd}')
#     for i in dirs:
#         print(f"子目录有:{i}")
#     for j in files:
#         print(f"子文件有:{j}")

'''对目录的操作
print(os.getcwd()) #获取当前的目录 等同于pwd
os.chdir('../文件对象') # 切换目录，等同于cd
print(os.listdir()) # 列出当前目录的内容，等同于ls
os.mkdir('os创建文件的demo') # 创建目录
os.makedirs('os创建文件的demo/a/b/c') #创建联级目录
os.rmdir('os创建文件的demo/a/b/c') #删除目录
os.rename('os创建文件的demo/a/b','os创建文件的demo/a/b修改后的目录名字') # 对目录重命名
print(os.path.isdir('os模块.py')) # 判断是否是目录 -> False
'''






'''对文件的操作
print(os.path.isfile('os模块.py')) # 判断是否是文件 -> True
print(os.path.basename(r'C:\Laptop\Desktop\文件对象\文件对象.py')) #获取文件名字
print(os.path.abspath('os模块.py')) # 返回绝对路径
print(os.path.dirname(os.path.abspath('os模块.py'))) # 如传入的是文件的路径,则给你返回该文件的路径(去除文件)
print(os.path.split(os.path.abspath('os模块.py'))) # 分割路径
print(os.path.exists('os模块1.py') ) # 判断你传入的路径是否正确
'''

'''
import json

""""对文件的操作"""""

data = {
    "status": 200,
    "msg": "ok",
    "data": {
        "slide": [],
        "logo_square": "https:\/\/demo43.wuht.net\/uploads\/attach\/2021\/09\/20210923\/510e07c4b0659ec0f7d5865cc7657d78.png",
        "logo_rectangle": "https:\/\/demo43.wuht.net\/uploads\/attach\/2021\/09\/20210923\/cb68258c4eef9d93edb849c215459b6a.png",
        "login_logo": "https:\/\/demo43.wuht.net\/uploads\/attach\/2021\/09\/20210923\/c8b6f81eb9400d90581d10a4d7e6ec31.png"
    }
}

# with open('./json_demo.json', 'w+') as jsonfile:
#     json.dump(data, jsonfile, ensure_ascii=False, indent=5)
#
# with  open('./json_demo.json', 'r') as read_jsonfile:
#     a = json.load(read_jsonfile)
#     print(type(a))

对数据的操作
# json.dumps() # 将python对象转换成json格式的字符串
json_str = json.dumps(data,ensure_ascii=False,indent=5)

# json.loads() # 将json格式的字符串转换成python对象

python_obj = json.loads(json_str)
print(python_obj)

'''
'''
import random

random.seed(14667999)
print(random.random())  # 随机生成0-1之间的小数
print(random.uniform(3.09, 3.1))  # 随机[a,b]之间的小数（a，b是小数）
print(random.randint(1, 2))  # 随机[a,b]之间的整数
print(random.randrange(0, 4, 2))  # 在该区间生成随机的整数

guest_list = ['小明', '小红', '小刚', '小蓝', '小飞', '小鹏', '小花']

random.shuffle(guest_list)  # 对列表打乱
print(f'抽奖前乱码的名单是：{guest_list}')
print(f'本次获得一等奖的是：{random.choice(guest_list)}')  # 随机选取一个元素
print(f'本次获得二等奖的是：{random.choices(guest_list, k=2)}')  # 随机选取k个元素

num_ls = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11]
print(random.sample(num_ls,5)) #随机选取seq中k个不重复的元素
'''

"""
冒泡排序:
    1.它是一个简单基本排序算法
    2.它是通过相邻的两个元素进行比较，如果前一个比后一个大，那么调换位置，所有在对数组排序的时候，第一轮会将最大值排至数组的末尾
    3.该算法的时间复杂度O（n^2）

nums = [1, 23, 4, 12, 1, 4, 12, 124, 123, 5, 2, 2, 41, 78123, 0]
# 我想对nums进行排序，大小顺序依次向右
n = len(nums)
for i in range(1, n):  # 进行n-1轮排序（最大轮次）
    swapped = False # 初始化 “交换”
    for j in range(n - i): # 每轮交换n-i次
        if nums[j] > nums[j+1]: 
            nums[j],nums[j+1] = nums[j+1],nums[j] # 交换元素位置
            swapped =True 
    if not swapped: # 如果某轮没有发生交换，代表列表已经是有序的，不需要继续循环，not swapped等价于swapped is Fasle
        break
print(nums)
"""
